home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_1 / prime.fac < prev    next >
Text File  |  1995-03-23  |  6KB  |  234 lines

  1. Article 3018 of comp.sys.handhelds:
  2. Path: en.ecn.purdue.edu!noose.ecn.purdue.edu!samsung!uunet!mcsun!unido!fauern!fauern!faui1f!kskalb
  3. From: kskalb@faui1f.informatik.uni-erlangen.de (Klaus Kalb)
  4. Newsgroups: comp.sys.handhelds
  5. Subject: HP48: Factoring Integers
  6. Message-ID: <kskalb.661793814@faui1f>
  7. Date: 21 Dec 90 15:36:54 GMT
  8. Sender: root@medusainformatik.uni-erlangen.de
  9. Lines: 221
  10.  
  11.  
  12. Hello,
  13.  
  14. This routine factors integers into primes.
  15. The program does trial division by all numbers that
  16. are not true multiples of 2,3,5 or 7.
  17. The main work is done in mcode, so it is fast.
  18. You need ASC\-> to install it.
  19.  
  20. Happy Christmas and a merry new year,
  21. -KK
  22.  
  23. ---------------------------------------------------------------------
  24.                          Author
  25. ---------------------------------------------------------------------
  26.  
  27.   Mail any suggestions or comments to
  28.  
  29.           kskalb@informatik.uni-erlangen.de
  30.  
  31. ---------------------------------------------------------------------
  32.                          Usage
  33. ---------------------------------------------------------------------
  34.  
  35.     Input:
  36.       Level 2: Number n to be factored (binary or real; n < 2^63)
  37.       Level 1: Bound  b (binary or real; b < 2^20)
  38.  
  39.     Output:
  40.       Level 1: List of Factors 
  41.  
  42. If the program is sure that all numbers in the output list are indeed
  43. primes, the list will be tagged with a plus-sign.
  44.  
  45. If the tag is missing, the last entry in the list might not be a prime.
  46.  
  47. All divisors t of n with t<=b will be found.
  48.  
  49. The entries in the result will be real, unless they are greate then 2^39.
  50. Note that this can only happen to the last number in the list.
  51.  
  52. ---------------------------------------------------------------------
  53.                          Installation
  54. ---------------------------------------------------------------------
  55.  
  56.   -- Download the following program to your HP48.
  57.   -- Be sure that ASC/-> is accessible.
  58.   -- Evaluate the downloaded object.
  59.   -- A program named 'TRIAL' will appear on the current directory.
  60.  
  61.  
  62. ---------------------------------------------------------------------
  63.                          Warning
  64. ---------------------------------------------------------------------
  65.  
  66.   The program 'TRIAL' contains a code object.
  67.   To my knowledge, programs containing code object can't be
  68.   edited on the HP48 by standard means, so don't try it.
  69.  
  70. ---------------------------------------------------------------------
  71.                          Disclaimer
  72. ---------------------------------------------------------------------
  73.  
  74.      This program makes use of undocumented low-level features of
  75.      the HP48SX calculator, and may or may not cause loss of data,
  76.      excessive battery drainage, and/or damage to the calculator
  77.      hardware.  The Author takes no responsibility whatsoever for 
  78.      any damage caused by the use of this program.
  79.  
  80.      This software is provided "as is" and WITHOUT ANY EXPRESS OR
  81.      IMPLIED WARRANTIES, including, but not limited to, THE IMPLIED
  82.      WARRANTIES OF MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE.
  83.  
  84. ------------------------------------------------------------------------------
  85.    Klaus Kalb    | mail :  IMMD1 / Martenstr. 3 / W-8520 Erlangen / Germany   
  86.                  | email:  kskalb@immd1.informatik.uni-erlangen.de   
  87. ------------------------------------------------------------------------------
  88.  
  89. %%HP: T(3)A(R)F(,);
  90. @
  91. @ TRIAL (generated by hp48pack at 21.12.90)
  92. @
  93. @$NAME     TRIAL
  94. @$DATE     21.12.90
  95. @$VERSION  2.18
  96. @
  97. @
  98. @ UserTrial      2.02 11.12.90
  99. @ CodeTrial      1.00 21.12.90
  100. @ Install        2.00 21.12.90
  101. @ TRIAL          2.00 21.12.90
  102. @
  103. @
  104. \<< CLLCD
  105.   "----------------------" DUP 1 DISP
  106.   "TRIAL    2.18 21.12.90" 2 DISP
  107.    DUP 3 DISP
  108.    " Factoring by a Wheel" 4 DISP
  109.    "    by Klaus Kalb" 5 DISP
  110.    6 DISP
  111. \<<
  112. @ $NAME    UserTrial
  113. @ $DATE    11.12.90
  114. @ $VERSION 2.02
  115.  
  116. \<<
  117.    \-> n b
  118.    \<<
  119.      IFERR
  120.        IF n TYPE DUP 0 \=/ SWAP 10 \=/ AND THEN 514 DOERR END
  121.        IF b TYPE DUP 0 \=/ SWAP 10 \=/ AND THEN 514 DOERR END
  122.        IF n #0d + DUP #7FFFFFFFFFFFFFFFh > SWAP #0d == OR THEN 515 DOERR END
  123.        IF b #0d + #FFFFFh > THEN 515 DOERR END
  124.      THEN
  125.        IF -55 FC? THEN n b END
  126.        ERRN DOERR
  127.      END
  128.      n #0d +
  129.      b #0d +
  130.      CodeTrial
  131.      SWAP
  132.      #18DBFh SYSEVAL     @ Short to Real
  133.      \-> r k
  134.      \<<
  135.        IF k THEN
  136.          1 k START
  137.            #18DBFh SYSEVAL 
  138.            k ROLL
  139.          NEXT
  140.        END
  141.        k \->LIST
  142.  
  143.        IF r #1d > THEN
  144.          r
  145.          IF
  146.            DUP DUP B\->R R\->B ==
  147.            THEN
  148.              B\->R
  149.            END
  150.            +
  151.          END
  152.        IF b #1d + DUP * r > THEN "+" \->TAG END
  153.      \>>
  154.    \>>
  155. \>>
  156.  
  157. @ $END UserTrial
  158.  
  159.  'UserTrial' STO
  160.  
  161.  
  162. @ $NAME    CodeTrial
  163. @ $DATE    21.12.90
  164. @ $VERSION 1.00
  165. @ $COMMAND ASC\->
  166.  
  167. "CCD20B61008F77F3510110AAF210810B2081B58082444000C213665702424626
  168. 42466264264684242486462462664246264242A2A021224011BD2BF6BF6BF6BF
  169. 6BF6BF61088F2D7608F735608FB97601112F8DD6950AF015A097CB12081B5808
  170. 24C7FFFC21366EDF118C24A91081181129F2C8111118AF3AF19F262A76B779FE
  171. 7F81EA75A7F9F280B7AB7597F9E11A9F180AF910A97CD3AF4101113132AF2263
  172. 01A7A103208F2D7608F735608FB9760113130657F1606E3F2485"
  173.  
  174. @ $END CodeTrial
  175.  
  176.  ASC\->
  177.  'CodeTrial' STO
  178.  
  179.  
  180. @ $NAME    Install
  181. @ $DATE    21.12.90
  182. @ $VERSION 2.00
  183. \<<
  184.   'UserTrial' RCL
  185.    #054AFh SYSEVAL  @ PRG\->
  186.    #05459h SYSEVAL  @ \->LIST
  187.    DUP 'CodeTrial' POS 
  188.    SWAP SIZE
  189.    SWAP - 2 + \-> n 
  190.    \<<
  191.       'UserTrial' RCL #054AFh SYSEVAL 
  192.       n ROLL
  193.       DROP 'CodeTrial' RCL
  194.       n ROLLD     
  195.    \>>
  196.    #05445h SYSEVAL @ \->PRG
  197. \>>
  198. @ $END Install
  199.  
  200.  'Install' STO
  201.  
  202.  
  203. @ $NAME    TRIAL
  204. @ $DATE    21.12.90
  205. @ $VERSION 2.00
  206. @ $COMMAND EVAL
  207.  
  208. \<<
  209.    Install
  210.    { 'UserTrial' 'CodeTrial' 'Install' } PURGE
  211. \>>
  212. @ $END TRIAL
  213.  
  214.  EVAL
  215.  'TRIAL' STO
  216.  
  217.  
  218. \>>
  219.   " unpack ?" 7 DISP
  220. @
  221.   { { "YES" \<< EVAL 
  222.              " TRIAL installed." 7 DISP 3 FREEZE
  223.              0 MENU \>> }
  224.              "" "" "" "" 
  225.     { "NO" \<< DROP 
  226.              0 MENU \>> }
  227.   } 3 FREEZE TMENU \>> 
  228.  
  229. @$END TRIAL
  230.  
  231. @ END END END END END END END END END END END END END END END END END END
  232.  
  233.  
  234.